package com.erp.entity.goods;

import com.fasterxml.jackson.annotation.JsonFormat;

import java.math.BigDecimal;
import java.util.Date;

/**
 *商品实体类
 */
public class Goods {

    private Integer goodsId;          // 商品主键
    private String goodsCode;         // 商品编码
    private String goodsName;         // 商品名称
    private String goodsBarcode;      // 商品条码（扫描枪录入）
    private String goodsSpecification; // 规格型号
    private Integer goodsCategoryId;  // 商品类别ID
    private String goodsCategoryName; // 商品类别名称（冗余，分页显示）
    private Integer goodsDefaultWarehouseId; // 首选仓库ID
    private String goodsDefaultWarehouseName; // 首选仓库名称（冗余，分页显示）
    private Boolean isMultiUnit;      // 计量类型（false单true多）
    private Integer goodsUnitId;      // 计量单位ID(单)
    private Integer mainUnit;         // 多计量单位
    private Boolean isPackage;        // 是否整件散包
    private Integer packageUnit;      // 默认整件散包单位（多单位的副单位）
    private Integer inUnit;             //首选入库单位
    private Integer outUnit;         //首选出库单位
    private String goodsOrigin;       // 商品产地
    private String goodsRegistrationCode; // 注册证号
    private String goodsProductionCode;   // 生产许可证
    private Integer goodsSupplierId;  // 默认供应商ID
    private String goodsSupplierName; // 默认供应商名称（冗余，查询条件）
    private Integer brandId;          // 品牌ID
    private String brandName;          // 品牌名称（冗余，查询条件）
    private Integer goodsPluCode;     // PLU码
    private BigDecimal goodsWeight;   // 商品重量（固定为KG做单位）
    private BigDecimal goodsLength;   // 商品长度(固定为m做单位)
    private BigDecimal goodsWidth;    // 商品宽度(固定为m做单位)
    private BigDecimal goodsHeight;   // 商品高度(固定为m做单位)
    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date goodsCreateDate;     // 创建时间
    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date goodsUpdateDate;     // 修改时间
    private Integer deleted;       // 是否删除
    private BigDecimal goodsRate;     // 商品税率
    private String goodsClassificationCode; // 税收分类编码
    private Integer goodsIsExempt;    // 是否免税
    private String goodsInvoiceName;  // 商品开票名称
    private String goodsRemark;       // 备注信息
    private Integer goodsLabel;       // 商品标签（0没有标签，1批：批次保质，2SN：序列号）
    private Integer goodsStatus;      // 商品状态（0禁用1启用）
    private Integer companyId;        // 公司ID
    private Boolean stockWarning;     // 是否库存预警
    private Boolean batchExpireManage; // 是否批次保质
    private Boolean serialManage;     // 是否序列号
    private Boolean initialSetting;   // 是否期初
    private Boolean warehouseWarning; // 是否分仓预警
    private BigDecimal goodsWareHousePrice; //商品库存价格
    private String imgMainUrl; //商品主图名称（冗余，数据库无此字段）


    public Goods() {
    }

    public Goods(Integer goodsId, String goodsCode, String goodsName, String goodsBarcode, String goodsSpecification, Integer goodsCategoryId, String goodsCategoryName, Integer goodsDefaultWarehouseId, String goodsDefaultWarehouseName, Boolean isMultiUnit, Integer goodsUnitId, Integer mainUnit, Boolean isPackage, Integer packageUnit, Integer inUnit, Integer outUnit, String goodsOrigin, String goodsRegistrationCode, String goodsProductionCode, Integer goodsSupplierId, String goodsSupplierName, Integer brandId, String brandName, Integer goodsPluCode, BigDecimal goodsWeight, BigDecimal goodsLength, BigDecimal goodsWidth, BigDecimal goodsHeight, Date goodsCreateDate, Date goodsUpdateDate, Integer deleted, BigDecimal goodsRate, String goodsClassificationCode, Integer goodsIsExempt, String goodsInvoiceName, String goodsRemark, Integer goodsLabel, Integer goodsStatus, Integer companyId, Boolean stockWarning, Boolean batchExpireManage, Boolean serialManage, Boolean initialSetting, Boolean warehouseWarning, BigDecimal goodsWareHousePrice, String imgMainUrl) {
        this.goodsId = goodsId;
        this.goodsCode = goodsCode;
        this.goodsName = goodsName;
        this.goodsBarcode = goodsBarcode;
        this.goodsSpecification = goodsSpecification;
        this.goodsCategoryId = goodsCategoryId;
        this.goodsCategoryName = goodsCategoryName;
        this.goodsDefaultWarehouseId = goodsDefaultWarehouseId;
        this.goodsDefaultWarehouseName = goodsDefaultWarehouseName;
        this.isMultiUnit = isMultiUnit;
        this.goodsUnitId = goodsUnitId;
        this.mainUnit = mainUnit;
        this.isPackage = isPackage;
        this.packageUnit = packageUnit;
        this.inUnit = inUnit;
        this.outUnit = outUnit;
        this.goodsOrigin = goodsOrigin;
        this.goodsRegistrationCode = goodsRegistrationCode;
        this.goodsProductionCode = goodsProductionCode;
        this.goodsSupplierId = goodsSupplierId;
        this.goodsSupplierName = goodsSupplierName;
        this.brandId = brandId;
        this.brandName = brandName;
        this.goodsPluCode = goodsPluCode;
        this.goodsWeight = goodsWeight;
        this.goodsLength = goodsLength;
        this.goodsWidth = goodsWidth;
        this.goodsHeight = goodsHeight;
        this.goodsCreateDate = goodsCreateDate;
        this.goodsUpdateDate = goodsUpdateDate;
        this.deleted = deleted;
        this.goodsRate = goodsRate;
        this.goodsClassificationCode = goodsClassificationCode;
        this.goodsIsExempt = goodsIsExempt;
        this.goodsInvoiceName = goodsInvoiceName;
        this.goodsRemark = goodsRemark;
        this.goodsLabel = goodsLabel;
        this.goodsStatus = goodsStatus;
        this.companyId = companyId;
        this.stockWarning = stockWarning;
        this.batchExpireManage = batchExpireManage;
        this.serialManage = serialManage;
        this.initialSetting = initialSetting;
        this.warehouseWarning = warehouseWarning;
        this.goodsWareHousePrice = goodsWareHousePrice;
        this.imgMainUrl = imgMainUrl;
    }

    /**
     * 获取
     * @return goodsId
     */
    public Integer getGoodsId() {
        return goodsId;
    }

    /**
     * 设置
     * @param goodsId
     */
    public void setGoodsId(Integer goodsId) {
        this.goodsId = goodsId;
    }

    /**
     * 获取
     * @return goodsCode
     */
    public String getGoodsCode() {
        return goodsCode;
    }

    /**
     * 设置
     * @param goodsCode
     */
    public void setGoodsCode(String goodsCode) {
        this.goodsCode = goodsCode;
    }

    /**
     * 获取
     * @return goodsName
     */
    public String getGoodsName() {
        return goodsName;
    }

    /**
     * 设置
     * @param goodsName
     */
    public void setGoodsName(String goodsName) {
        this.goodsName = goodsName;
    }

    /**
     * 获取
     * @return goodsBarcode
     */
    public String getGoodsBarcode() {
        return goodsBarcode;
    }

    /**
     * 设置
     * @param goodsBarcode
     */
    public void setGoodsBarcode(String goodsBarcode) {
        this.goodsBarcode = goodsBarcode;
    }

    /**
     * 获取
     * @return goodsSpecification
     */
    public String getGoodsSpecification() {
        return goodsSpecification;
    }

    /**
     * 设置
     * @param goodsSpecification
     */
    public void setGoodsSpecification(String goodsSpecification) {
        this.goodsSpecification = goodsSpecification;
    }

    /**
     * 获取
     * @return goodsCategoryId
     */
    public Integer getGoodsCategoryId() {
        return goodsCategoryId;
    }

    /**
     * 设置
     * @param goodsCategoryId
     */
    public void setGoodsCategoryId(Integer goodsCategoryId) {
        this.goodsCategoryId = goodsCategoryId;
    }

    /**
     * 获取
     * @return goodsCategoryName
     */
    public String getGoodsCategoryName() {
        return goodsCategoryName;
    }

    /**
     * 设置
     * @param goodsCategoryName
     */
    public void setGoodsCategoryName(String goodsCategoryName) {
        this.goodsCategoryName = goodsCategoryName;
    }

    /**
     * 获取
     * @return goodsDefaultWarehouseId
     */
    public Integer getGoodsDefaultWarehouseId() {
        return goodsDefaultWarehouseId;
    }

    /**
     * 设置
     * @param goodsDefaultWarehouseId
     */
    public void setGoodsDefaultWarehouseId(Integer goodsDefaultWarehouseId) {
        this.goodsDefaultWarehouseId = goodsDefaultWarehouseId;
    }

    /**
     * 获取
     * @return goodsDefaultWarehouseName
     */
    public String getGoodsDefaultWarehouseName() {
        return goodsDefaultWarehouseName;
    }

    /**
     * 设置
     * @param goodsDefaultWarehouseName
     */
    public void setGoodsDefaultWarehouseName(String goodsDefaultWarehouseName) {
        this.goodsDefaultWarehouseName = goodsDefaultWarehouseName;
    }

    /**
     * 获取
     * @return isMultiUnit
     */
    public Boolean getIsMultiUnit() {
        return isMultiUnit;
    }

    /**
     * 设置
     * @param isMultiUnit
     */
    public void setIsMultiUnit(Boolean isMultiUnit) {
        this.isMultiUnit = isMultiUnit;
    }

    /**
     * 获取
     * @return goodsUnitId
     */
    public Integer getGoodsUnitId() {
        return goodsUnitId;
    }

    /**
     * 设置
     * @param goodsUnitId
     */
    public void setGoodsUnitId(Integer goodsUnitId) {
        this.goodsUnitId = goodsUnitId;
    }

    /**
     * 获取
     * @return mainUnit
     */
    public Integer getMainUnit() {
        return mainUnit;
    }

    /**
     * 设置
     * @param mainUnit
     */
    public void setMainUnit(Integer mainUnit) {
        this.mainUnit = mainUnit;
    }

    /**
     * 获取
     * @return isPackage
     */
    public Boolean getIsPackage() {
        return isPackage;
    }

    /**
     * 设置
     * @param isPackage
     */
    public void setIsPackage(Boolean isPackage) {
        this.isPackage = isPackage;
    }

    /**
     * 获取
     * @return packageUnit
     */
    public Integer getPackageUnit() {
        return packageUnit;
    }

    /**
     * 设置
     * @param packageUnit
     */
    public void setPackageUnit(Integer packageUnit) {
        this.packageUnit = packageUnit;
    }

    /**
     * 获取
     * @return inUnit
     */
    public Integer getInUnit() {
        return inUnit;
    }

    /**
     * 设置
     * @param inUnit
     */
    public void setInUnit(Integer inUnit) {
        this.inUnit = inUnit;
    }

    /**
     * 获取
     * @return outUnit
     */
    public Integer getOutUnit() {
        return outUnit;
    }

    /**
     * 设置
     * @param outUnit
     */
    public void setOutUnit(Integer outUnit) {
        this.outUnit = outUnit;
    }

    /**
     * 获取
     * @return goodsOrigin
     */
    public String getGoodsOrigin() {
        return goodsOrigin;
    }

    /**
     * 设置
     * @param goodsOrigin
     */
    public void setGoodsOrigin(String goodsOrigin) {
        this.goodsOrigin = goodsOrigin;
    }

    /**
     * 获取
     * @return goodsRegistrationCode
     */
    public String getGoodsRegistrationCode() {
        return goodsRegistrationCode;
    }

    /**
     * 设置
     * @param goodsRegistrationCode
     */
    public void setGoodsRegistrationCode(String goodsRegistrationCode) {
        this.goodsRegistrationCode = goodsRegistrationCode;
    }

    /**
     * 获取
     * @return goodsProductionCode
     */
    public String getGoodsProductionCode() {
        return goodsProductionCode;
    }

    /**
     * 设置
     * @param goodsProductionCode
     */
    public void setGoodsProductionCode(String goodsProductionCode) {
        this.goodsProductionCode = goodsProductionCode;
    }

    /**
     * 获取
     * @return goodsSupplierId
     */
    public Integer getGoodsSupplierId() {
        return goodsSupplierId;
    }

    /**
     * 设置
     * @param goodsSupplierId
     */
    public void setGoodsSupplierId(Integer goodsSupplierId) {
        this.goodsSupplierId = goodsSupplierId;
    }

    /**
     * 获取
     * @return goodsSupplierName
     */
    public String getGoodsSupplierName() {
        return goodsSupplierName;
    }

    /**
     * 设置
     * @param goodsSupplierName
     */
    public void setGoodsSupplierName(String goodsSupplierName) {
        this.goodsSupplierName = goodsSupplierName;
    }

    /**
     * 获取
     * @return brandId
     */
    public Integer getBrandId() {
        return brandId;
    }

    /**
     * 设置
     * @param brandId
     */
    public void setBrandId(Integer brandId) {
        this.brandId = brandId;
    }

    /**
     * 获取
     * @return brandName
     */
    public String getBrandName() {
        return brandName;
    }

    /**
     * 设置
     * @param brandName
     */
    public void setBrandName(String brandName) {
        this.brandName = brandName;
    }

    /**
     * 获取
     * @return goodsPluCode
     */
    public Integer getGoodsPluCode() {
        return goodsPluCode;
    }

    /**
     * 设置
     * @param goodsPluCode
     */
    public void setGoodsPluCode(Integer goodsPluCode) {
        this.goodsPluCode = goodsPluCode;
    }

    /**
     * 获取
     * @return goodsWeight
     */
    public BigDecimal getGoodsWeight() {
        return goodsWeight;
    }

    /**
     * 设置
     * @param goodsWeight
     */
    public void setGoodsWeight(BigDecimal goodsWeight) {
        this.goodsWeight = goodsWeight;
    }

    /**
     * 获取
     * @return goodsLength
     */
    public BigDecimal getGoodsLength() {
        return goodsLength;
    }

    /**
     * 设置
     * @param goodsLength
     */
    public void setGoodsLength(BigDecimal goodsLength) {
        this.goodsLength = goodsLength;
    }

    /**
     * 获取
     * @return goodsWidth
     */
    public BigDecimal getGoodsWidth() {
        return goodsWidth;
    }

    /**
     * 设置
     * @param goodsWidth
     */
    public void setGoodsWidth(BigDecimal goodsWidth) {
        this.goodsWidth = goodsWidth;
    }

    /**
     * 获取
     * @return goodsHeight
     */
    public BigDecimal getGoodsHeight() {
        return goodsHeight;
    }

    /**
     * 设置
     * @param goodsHeight
     */
    public void setGoodsHeight(BigDecimal goodsHeight) {
        this.goodsHeight = goodsHeight;
    }

    /**
     * 获取
     * @return goodsCreateDate
     */
    public Date getGoodsCreateDate() {
        return goodsCreateDate;
    }

    /**
     * 设置
     * @param goodsCreateDate
     */
    public void setGoodsCreateDate(Date goodsCreateDate) {
        this.goodsCreateDate = goodsCreateDate;
    }

    /**
     * 获取
     * @return goodsUpdateDate
     */
    public Date getGoodsUpdateDate() {
        return goodsUpdateDate;
    }

    /**
     * 设置
     * @param goodsUpdateDate
     */
    public void setGoodsUpdateDate(Date goodsUpdateDate) {
        this.goodsUpdateDate = goodsUpdateDate;
    }

    /**
     * 获取
     * @return deleted
     */
    public Integer getDeleted() {
        return deleted;
    }

    /**
     * 设置
     * @param deleted
     */
    public void setDeleted(Integer deleted) {
        this.deleted = deleted;
    }

    /**
     * 获取
     * @return goodsRate
     */
    public BigDecimal getGoodsRate() {
        return goodsRate;
    }

    /**
     * 设置
     * @param goodsRate
     */
    public void setGoodsRate(BigDecimal goodsRate) {
        this.goodsRate = goodsRate;
    }

    /**
     * 获取
     * @return goodsClassificationCode
     */
    public String getGoodsClassificationCode() {
        return goodsClassificationCode;
    }

    /**
     * 设置
     * @param goodsClassificationCode
     */
    public void setGoodsClassificationCode(String goodsClassificationCode) {
        this.goodsClassificationCode = goodsClassificationCode;
    }

    /**
     * 获取
     * @return goodsIsExempt
     */
    public Integer getGoodsIsExempt() {
        return goodsIsExempt;
    }

    /**
     * 设置
     * @param goodsIsExempt
     */
    public void setGoodsIsExempt(Integer goodsIsExempt) {
        this.goodsIsExempt = goodsIsExempt;
    }

    /**
     * 获取
     * @return goodsInvoiceName
     */
    public String getGoodsInvoiceName() {
        return goodsInvoiceName;
    }

    /**
     * 设置
     * @param goodsInvoiceName
     */
    public void setGoodsInvoiceName(String goodsInvoiceName) {
        this.goodsInvoiceName = goodsInvoiceName;
    }

    /**
     * 获取
     * @return goodsRemark
     */
    public String getGoodsRemark() {
        return goodsRemark;
    }

    /**
     * 设置
     * @param goodsRemark
     */
    public void setGoodsRemark(String goodsRemark) {
        this.goodsRemark = goodsRemark;
    }

    /**
     * 获取
     * @return goodsLabel
     */
    public Integer getGoodsLabel() {
        return goodsLabel;
    }

    /**
     * 设置
     * @param goodsLabel
     */
    public void setGoodsLabel(Integer goodsLabel) {
        this.goodsLabel = goodsLabel;
    }

    /**
     * 获取
     * @return goodsStatus
     */
    public Integer getGoodsStatus() {
        return goodsStatus;
    }

    /**
     * 设置
     * @param goodsStatus
     */
    public void setGoodsStatus(Integer goodsStatus) {
        this.goodsStatus = goodsStatus;
    }

    /**
     * 获取
     * @return companyId
     */
    public Integer getCompanyId() {
        return companyId;
    }

    /**
     * 设置
     * @param companyId
     */
    public void setCompanyId(Integer companyId) {
        this.companyId = companyId;
    }

    /**
     * 获取
     * @return stockWarning
     */
    public Boolean getStockWarning() {
        return stockWarning;
    }

    /**
     * 设置
     * @param stockWarning
     */
    public void setStockWarning(Boolean stockWarning) {
        this.stockWarning = stockWarning;
    }

    /**
     * 获取
     * @return batchExpireManage
     */
    public Boolean getBatchExpireManage() {
        return batchExpireManage;
    }

    /**
     * 设置
     * @param batchExpireManage
     */
    public void setBatchExpireManage(Boolean batchExpireManage) {
        this.batchExpireManage = batchExpireManage;
    }

    /**
     * 获取
     * @return serialManage
     */
    public Boolean getSerialManage() {
        return serialManage;
    }

    /**
     * 设置
     * @param serialManage
     */
    public void setSerialManage(Boolean serialManage) {
        this.serialManage = serialManage;
    }

    /**
     * 获取
     * @return initialSetting
     */
    public Boolean getInitialSetting() {
        return initialSetting;
    }

    /**
     * 设置
     * @param initialSetting
     */
    public void setInitialSetting(Boolean initialSetting) {
        this.initialSetting = initialSetting;
    }

    /**
     * 获取
     * @return warehouseWarning
     */
    public Boolean getWarehouseWarning() {
        return warehouseWarning;
    }

    /**
     * 设置
     * @param warehouseWarning
     */
    public void setWarehouseWarning(Boolean warehouseWarning) {
        this.warehouseWarning = warehouseWarning;
    }

    /**
     * 获取
     * @return goodsWareHousePrice
     */
    public BigDecimal getGoodsWareHousePrice() {
        return goodsWareHousePrice;
    }

    /**
     * 设置
     * @param goodsWareHousePrice
     */
    public void setGoodsWareHousePrice(BigDecimal goodsWareHousePrice) {
        this.goodsWareHousePrice = goodsWareHousePrice;
    }

    /**
     * 获取
     * @return imgMainUrl
     */
    public String getImgMainUrl() {
        return imgMainUrl;
    }

    /**
     * 设置
     * @param imgMainUrl
     */
    public void setImgMainUrl(String imgMainUrl) {
        this.imgMainUrl = imgMainUrl;
    }

    public String toString() {
        return "Goods{goodsId = " + goodsId + ", goodsCode = " + goodsCode + ", goodsName = " + goodsName + ", goodsBarcode = " + goodsBarcode + ", goodsSpecification = " + goodsSpecification + ", goodsCategoryId = " + goodsCategoryId + ", goodsCategoryName = " + goodsCategoryName + ", goodsDefaultWarehouseId = " + goodsDefaultWarehouseId + ", goodsDefaultWarehouseName = " + goodsDefaultWarehouseName + ", isMultiUnit = " + isMultiUnit + ", goodsUnitId = " + goodsUnitId + ", mainUnit = " + mainUnit + ", isPackage = " + isPackage + ", packageUnit = " + packageUnit + ", inUnit = " + inUnit + ", outUnit = " + outUnit + ", goodsOrigin = " + goodsOrigin + ", goodsRegistrationCode = " + goodsRegistrationCode + ", goodsProductionCode = " + goodsProductionCode + ", goodsSupplierId = " + goodsSupplierId + ", goodsSupplierName = " + goodsSupplierName + ", brandId = " + brandId + ", brandName = " + brandName + ", goodsPluCode = " + goodsPluCode + ", goodsWeight = " + goodsWeight + ", goodsLength = " + goodsLength + ", goodsWidth = " + goodsWidth + ", goodsHeight = " + goodsHeight + ", goodsCreateDate = " + goodsCreateDate + ", goodsUpdateDate = " + goodsUpdateDate + ", deleted = " + deleted + ", goodsRate = " + goodsRate + ", goodsClassificationCode = " + goodsClassificationCode + ", goodsIsExempt = " + goodsIsExempt + ", goodsInvoiceName = " + goodsInvoiceName + ", goodsRemark = " + goodsRemark + ", goodsLabel = " + goodsLabel + ", goodsStatus = " + goodsStatus + ", companyId = " + companyId + ", stockWarning = " + stockWarning + ", batchExpireManage = " + batchExpireManage + ", serialManage = " + serialManage + ", initialSetting = " + initialSetting + ", warehouseWarning = " + warehouseWarning + ", goodsWareHousePrice = " + goodsWareHousePrice + ", imgMainUrl = " + imgMainUrl + "}";
    }
}
